Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (480)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (546)
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  
  Maps for storing sprite data?  (Read 614 times)
0 Members and 1 Guest are viewing this topic.
Offline gbeebe

Senior Member


Medals: 5
Projects: 1



« Posted 2011-12-02 04:55:32 »

Ok, so this might be a bit confusing for me to describe.
I've got a character/player class named Chara.  Inside it is a public Map that holds a Sprite class, which holds the Image, offsets and such.  Which is nice, because I can refer to a sprite frame by name.  To draw a sprite, I'm doing something like this:
Player1 is a Chara class, btw...
1  
g.drawImage(Player1.getSprite("faceLeft"), Player1.getX("faceLeft") - Player1.getOffX("faceLeft")+ mapOffX, Player1.getY("faceLeft") - Player1.getOffY("faceLeft") + mapOffY, null);

The Chara class gets the Sprite class from the Map by using the string passed to the procedures.  I do that to draw the body, and then something similar to draw the arm('cause it rotates separately) and the graphic of the weapon the sprite is holding,  Which is fine right now, but I'm worried that after I get to the point where I'm adding other players and NPC into the mix, this might be really slow.  Are Maps something I should try to avoid?  I've seen some articles on speed tests with Maps, they don't scare me, but they're not game related either.  Is there something else I should be doing instead?  
Offline roland
« Reply #1 - Posted 2011-12-02 06:45:41 »

Hashmaps are very fast - order (1), much better than arraylists(order n) etc. Because you don't search through the all the elements, it takes you instantly to the right spot in the map.

It probably will be fine, but if you are really concerned you can speed it up by not using a map and just having a member variable for each sprite
eg.

in Player class:
Sprite faceLeft;
Sprite faceRight;
...

I would have the sprite class storing offset and stuff, instead of the map holding it.

Sprite faceLeft = Player1.GetFaceLeft();
so g.drawImage(faceLeft.GetImage(), faceLeft.GetX(), etc


If you don't know the names of the sprites beforehand, you might use a map, but you should still do what I said about storing the offsets and everything in the class, so then you only need 1 map get call instead of 5 for each player.

So

Sprite faceLeft = player1.GetSpriteFromMap("faceLeft")
g.DrawImage(faceLeft.GetImage(), ...);




Offline gbeebe

Senior Member


Medals: 5
Projects: 1



« Reply #2 - Posted 2011-12-03 02:25:37 »

Nice, I never thought to have a function to return the sprite class, it's kinda' like a pointer then  Smiley
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline pitbuller
« Reply #3 - Posted 2011-12-03 18:21:13 »

How about your rendering at Player1 class. Then you can just minimize it to Player.render(g,mapOffX,mapOffY);

Also you could make myOwnGraphicObject class.
That would encapsulate sprite, position, offsets and other data if needed.
And some utility methos that would calcualte position form x and offSetX

So if faceLeft would be myOwnGraphicObject the code look like this.
1  
2  
3  
void Player.render(Graphics g, float mapOffX, float mapOffY){
g.drawImage(faceLeft.sprite, faceLeft.getPosX() + mapOffX, faceLeft.getPosY() + mapOffY, null);
}

Your way seems to be too vocal with hardly any benefits.


Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

atombrot (20 views)
2014-08-19 09:29:53

Tekkerue (21 views)
2014-08-16 06:45:27

Tekkerue (21 views)
2014-08-16 06:22:17

Tekkerue (12 views)
2014-08-16 06:20:21

Tekkerue (19 views)
2014-08-16 06:12:11

Rayexar (55 views)
2014-08-11 02:49:23

BurntPizza (37 views)
2014-08-09 21:09:32

BurntPizza (27 views)
2014-08-08 02:01:56

Norakomi (35 views)
2014-08-06 19:49:38

BurntPizza (64 views)
2014-08-03 02:57:17
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org 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‑gaming.org
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!